1. Technical Field
This invention pertains to a memory which can be partitioned into random access memory (RAM) and content addressable memory (CAM) subfields, all on the same integrated circuit.
2. Background Art
A content addressable memory is a memory device in which data is stored in word locations comprising multiple memory cells, each cell storing a single bit of information. Unlike random access memory, a search word in a comparand register may be simultaneously compared with all stored data words. When a match occurs between the search word and one or more of the stored data words, a match signal is generated. If a comparison for only a portion of a stored data word is desired, one or more mask registers may be used to prevent particular bits within the data word or words from taking part in the comparison with the search word.
Various CAM devices are known in the prior art. For example, U.S. Pat. No. 4,845,668 to Sano et al. teaches a variable field CAM. Each stored data word can be divided into fields so that only one or more fields comprising a portion of the stored data word are compared with a corresponding segment of a search word.
U.S. Pat. No. 3,353,159 to Lee describes a CAM in which a search word is compared to stored data words, followed by adding information concerning the location of matched words to the existing stored data words. A new search may then be conducted using new criteria, to search the memory array based on both initially stored information and information added in response to the first search.
A character identification device is described in U.S. Pat. No. 4,958,377 to Takahashi. This device utilizes CAM with a masking scheme to select what portion of each stored data word is searched. U.S. Pat. No. 3,257,646 to Roth reveals a CAM array wherein a multi-step search process is utilized, to compare a portion of a search word against one field of stored data words, followed by a subsequent search of another portion of the search word compared against a different field of the same set of stored data words. In this manner, a data base with variable word lengths may be searched.
U.S. Pat. No. 3,675,211 to Raviv discloses a tertiary associative memory with a field for storing variable length codes, a field for storing corresponding fixed length codes, and a length field storing the number of significant bits in each of the variable length codes. The variable length code includes data associated with a corresponding fixed length code, but may be stored on a separate RAM chip.
U.S. Pat. No. 3,685,020 to Meade and U.S. Pat. No. 3,868,642 to Sachs both describe memory systems with CAM and RAM components. The Meade patent includes a random access array which is accessed through a CAM array. When a match is identified in the CAM portion, corresponding information in RAM is energized. Similarly, the Sachs patent describes a CAM array with a RAM portion for storing associated data. In both cases, the RAM and CAM cells are physically different, so that there is no ability to vary which portion of the memory system functions as RAM, and which as CAM.
RAM devices are also known in the prior art which can be subdivided or configured by variable lengths. For example, U.S. Pat. No. 5,014,195 to Farrell et al. discusses a set associative cache which can be selectively configured to provide different data sets arrangements. U.S. Pat. No. 4,903,234 to Sakuraba et al. discloses a memory system which can be subdivided according to key data setting units.
While each of these memory devices known in the prior art is useful for its intended purpose, no memory array is known which may be partitioned in a programmable fashion by the user into separate CAM and RAM sections. A need exists for a memory array which can be partitioned into separate CAM and RAM sections, with only the CAM section of each stored data word participating in comparisons, and with associated information directly retrievable from the RAM portion of each stored data word which is found to match when a comparison is conducted. Such a memory array can be used in a variety of applications, including optical and magnetic disk cache memories, data base systems, machine vision systems, and target acquisition systems. In one application, such a memory array may be beneficially used in local area network (LAN) bridges and routers to search a station list and retrieve associated information from a matched data word such as a bridge port address, segment status, access conditions, and station aging data.